பைதான் தொகுப்பு நிர்வாகத்திற்கான setup.py மற்றும் pyproject.toml ஆகியவற்றின் ஆழமான ஒப்பீடு, சிறந்த நடைமுறைகள், இடம்பெயர்வு உத்திகள் மற்றும் நவீன கருவிகளை உள்ளடக்கியது.
பைதான் தொகுப்பு கட்டமைப்பு: Setup.py vs. Pyproject.toml - ஒரு விரிவான வழிகாட்டி
பல ஆண்டுகளாக, setup.py
கோப்பு பைதான் தொகுப்பு நிர்வாகத்தின் மூலக்கல்லாக இருந்தது. இருப்பினும், களம் வளர்ந்துள்ளது, மற்றும் pyproject.toml
ஒரு நவீன மாற்றாக உருவெடுத்துள்ளது. இந்த விரிவான வழிகாட்டி இந்த இரண்டு அணுகுமுறைகளுக்கு இடையிலான வேறுபாடுகளை ஆராய்கிறது, இது உங்கள் திட்டத்திற்கு எது சரியானது மற்றும் உங்கள் பைதான் தொகுப்புகளை எவ்வாறு திறம்பட நிர்வகிப்பது என்பதைப் புரிந்துகொள்ள உதவுகிறது.
அடிப்படையைப் புரிந்துகொள்வது
பைதான் தொகுப்பு என்றால் என்ன?
பைதான் தொகுப்பு என்பது உங்கள் பைதான் குறியீட்டை ஒழுங்கமைத்து விநியோகிப்பதற்கான ஒரு வழியாகும். தொடர்புடைய தொகுதிகளை ஒரு அடைவு படிநிலையில் குழுவாக்க இது உங்களை அனுமதிக்கிறது, இது உங்கள் குறியீட்டை மேலும் மட்டுப்படுத்தக்கூடியதாகவும், மீண்டும் பயன்படுத்தக்கூடியதாகவும் மற்றும் பராமரிக்கக்கூடியதாகவும் ஆக்குகிறது. உங்கள் குறியீட்டை மற்றவர்களுடன் பகிர்ந்து கொள்வதற்கும், உங்கள் திட்டங்களில் உள்ள சார்புகளை நிர்வகிப்பதற்கும் தொகுப்புகள் அவசியம்.
தொகுப்பு மெட்டாடேட்டாவின் பங்கு
தொகுப்பு மெட்டாடேட்டா உங்கள் தொகுப்பைப் பற்றிய முக்கியமான தகவல்களை வழங்குகிறது, அதாவது அதன் பெயர், பதிப்பு, ஆசிரியர், சார்புகள் மற்றும் நுழைவு புள்ளிகள். இந்த மெட்டாடேட்டாவானது pip
போன்ற தொகுப்பு மேலாளர்களால் நிறுவவும், மேம்படுத்தவும் மற்றும் உங்கள் தொகுப்புகளை நிர்வகிக்கவும் பயன்படுத்தப்படுகிறது. வரலாற்று ரீதியாக, setup.py
இந்த மெட்டாடேட்டாவை வரையறுப்பதற்கான முதன்மை வழியாக இருந்தது.
Setup.py: பாரம்பரிய அணுகுமுறை
Setup.py என்றால் என்ன?
setup.py
என்பது ஒரு பைதான் ஸ்கிரிப்ட் ஆகும், இது உங்கள் தொகுப்பின் கட்டமைப்பு மற்றும் மெட்டாடேட்டாவை வரையறுக்க setuptools
நூலகத்தைப் பயன்படுத்துகிறது. இது ஒரு இயக்கவியல் ரீதியாக செயல்படுத்தப்பட்ட கோப்பாகும், அதாவது தொகுப்பை உள்ளமைக்க இது பைதான் குறியீட்டை இயக்குகிறது.
Setup.py இன் முக்கிய கூறுகள்
ஒரு பொதுவான setup.py
கோப்பில் பின்வரும் கூறுகள் உள்ளன:
- தொகுப்பின் பெயர்: உங்கள் தொகுப்பின் பெயர் (எ.கா.,
my_package
). - பதிப்பு: உங்கள் தொகுப்பின் பதிப்பு எண் (எ.கா.,
1.0.0
). - ஆசிரியர் மற்றும் பராமரிப்பாளர் தகவல்: தொகுப்பின் ஆசிரியர் மற்றும் பராமரிப்பாளரைப் பற்றிய விவரங்கள்.
- சார்புகள்: உங்கள் தொகுப்பு சார்ந்திருக்கும் பிற தொகுப்புகளின் பட்டியல் (எ.கா.,
requests >= 2.20.0
). - நுழைவு புள்ளிகள்: கட்டளை வரி ஸ்கிரிப்டுகளுக்கான வரையறைகள் அல்லது உங்கள் தொகுப்புக்கான பிற நுழைவு புள்ளிகள்.
- தொகுப்பு தரவு: குறியீடு அல்லாத கோப்புகள் (எ.கா., உள்ளமைவு கோப்புகள், தரவு கோப்புகள்) தொகுப்பில் சேர்க்கப்பட வேண்டும்.
Setup.py உதாரணம்
```python from setuptools import setup, find_packages setup( name='my_package', version='1.0.0', author='John Doe', author_email='john.doe@example.com', description='A simple Python package', packages=find_packages(), install_requires=[ 'requests >= 2.20.0', ], entry_points={ 'console_scripts': [ 'my_script = my_package.module:main', ], }, classifiers=[ 'Programming Language :: Python :: 3', 'License :: OSI Approved :: MIT License', 'Operating System :: OS Independent', ], ) ```Setup.py இன் நன்மைகள்
- அறிமுகம்: இது பாரம்பரிய மற்றும் நன்கு அறியப்பட்ட அணுகுமுறை, எனவே பல டெவலப்பர்கள் ஏற்கனவே அதை அறிந்திருக்கிறார்கள்.
- நெகிழ்வுத்தன்மை: இது ஒரு பைதான் ஸ்கிரிப்ட் என்பதால், இது அதிக அளவிலான நெகிழ்வுத்தன்மையை வழங்குகிறது. நீங்கள் சிக்கலான தர்க்கத்தை செயல்படுத்தலாம் மற்றும் தேவைக்கேற்ப உருவாக்க செயல்முறையைத் தனிப்பயனாக்கலாம்.
- விரிவாக்கம்: செட்டூல்கள் ஒரு சிறந்த அம்சங்களை வழங்குகிறது மற்றும் தனிப்பயன் கட்டளைகள் மற்றும் நீட்டிப்புகளுடன் விரிவாக்கப்படலாம்.
Setup.py இன் தீமைகள்
- டைனமிக் செயலாக்கம்:
setup.py
இன் டைனமிக் தன்மை பாதுகாப்பு அபாயமாக இருக்கலாம், ஏனெனில் இது உருவாக்க செயல்முறையின் போது தன்னிச்சையான குறியீட்டை இயக்குகிறது. - உள்ளமைந்த சார்புகள்:
setup.py
பெரும்பாலும் செட்டூல்கள் போன்ற உள்ளமைந்த சார்புகளை நம்பியுள்ளது, இது முரண்பாடுகள் மற்றும் பிழைகளுக்கு வழிவகுக்கும். - சிக்கலானது: சிக்கலான திட்டங்களுக்கு,
setup.py
பெரியதாகவும் பராமரிக்க கடினமாகவும் இருக்கலாம். - வரையறுக்கப்பட்ட அறிவிப்பு உள்ளமைவு: தொகுப்பு மெட்டாடேட்டாவின் பெரும்பகுதி கட்டாயமாக வரையறுக்கப்படுகிறது, அதைப்பற்றி நியாயப்படுத்துவது கடினம்.
Pyproject.toml: நவீன மாற்று
Pyproject.toml என்றால் என்ன?
pyproject.toml
என்பது ஒரு உள்ளமைவு கோப்பாகும், இது உங்கள் தொகுப்பின் உருவாக்க முறை மற்றும் மெட்டாடேட்டாவை வரையறுக்க TOML (Tom's Obvious, Minimal Language) வடிவமைப்பைப் பயன்படுத்துகிறது. இது ஒரு அறிவிப்பு அணுகுமுறை, அதாவது நீங்கள் அதை எவ்வாறு அடைவது என்பதை விட நீங்கள் என்ன சாதிக்க விரும்புகிறீர்கள் என்பதைக் குறிப்பிடுகிறீர்கள்.
Pyproject.toml இன் முக்கிய பிரிவுகள்
ஒரு பொதுவானpyproject.toml
கோப்பில் பின்வரும் பிரிவுகள் உள்ளன:
[build-system]
: பயன்படுத்த வேண்டிய உருவாக்க முறைமையை வரையறுக்கிறது (எ.கா.,setuptools
,poetry
,flit
).[project]
: அதன் பெயர், பதிப்பு, விளக்கம், ஆசிரியர்கள் மற்றும் சார்புகள் போன்ற திட்டத்தைப் பற்றிய மெட்டாடேட்டாவைக் கொண்டுள்ளது.[tool.poetry]
அல்லது[tool.flit]
: கருவி சார்ந்த உள்ளமைவுகளுக்கான பிரிவுகள் (எ.கா., கவிதை, ஃப்லிட்).
Pyproject.toml உதாரணம் (செட்டூல்களுடன்)
```toml [build-system] requires = ["setuptools>=61.0"] build-backend = "setuptools.build_meta" [project] name = "my_package" version = "1.0.0" description = "A simple Python package" authors = [ { name = "John Doe", email = "john.doe@example.com" } ] dependencies = [ "requests >= 2.20.0", ] [project.scripts] my_script = "my_package.module:main" [project.optional-dependencies] dev = [ "pytest", "flake8", ] [project.classifiers] classifiers = [ "Programming Language :: Python :: 3", "License :: OSI Approved :: MIT License", "Operating System :: OS Independent", ] [project.urls] homepage = "https://example.com" repository = "https://github.com/example/my_package" ```Pyproject.toml உதாரணம் (கவிதையுடன்)
```toml [tool.poetry] name = "my_package" version = "1.0.0" description = "A simple Python package" authors = ["John DoePyproject.toml இன் நன்மைகள்
- அறிவிப்பு உள்ளமைவு:
pyproject.toml
உங்கள் தொகுப்பு மெட்டாடேட்டாவை வரையறுக்க ஒரு அறிவிப்பு வழியை வழங்குகிறது, இது புரிந்து கொள்ளவும் பராமரிக்கவும் எளிதாக்குகிறது. - நிலையான உருவாக்க முறைமை: இது பயன்படுத்த வேண்டிய உருவாக்க முறைமையை குறிப்பிடுகிறது, வெவ்வேறு சூழல்களில் நிலையான கட்டமைப்புகளை உறுதி செய்கிறது.
- மேம்படுத்தப்பட்ட சார்பு மேலாண்மை: கவிதை மற்றும் பிப்பென்வ் போன்ற கருவிகள் வலுவான சார்பு மேலாண்மை அம்சங்களை வழங்க
pyproject.toml
உடன் தடையின்றி ஒருங்கிணைக்கப்படுகின்றன. - குறைக்கப்பட்ட பாதுகாப்பு அபாயங்கள்: இது ஒரு நிலையான உள்ளமைவு கோப்பாக இருப்பதால், உருவாக்க செயல்முறையின் போது குறியீட்டை இயக்கவியல் ரீதியாக செயல்படுத்துவதோடு தொடர்புடைய பாதுகாப்பு அபாயங்களை இது நீக்குகிறது.
- நவீன கருவிகளுடன் ஒருங்கிணைப்பு:
pyproject.toml
என்பது கவிதை, பிப்பென்வ் மற்றும் ஃப்லிட் போன்ற நவீன பைதான் தொகுப்பு கருவிகளுக்கான தரநிலை.
Pyproject.toml இன் தீமைகள்
- கற்றல் வளைவு: டெவலப்பர்கள் ஒரு புதிய தொடரியல் (TOML) மற்றும் தொகுப்பு நிர்வாகத்தைப் பற்றி சிந்திக்கும் புதிய வழியைக் கற்றுக்கொள்ள வேண்டியிருக்கலாம்.
- வரையறுக்கப்பட்ட நெகிழ்வுத்தன்மை: இது சிக்கலான தர்க்கம் தேவைப்படும் அதிக தனிப்பயனாக்கப்பட்ட உருவாக்க செயல்முறைகளுக்கு ஏற்றதாக இருக்காது.
- கருவி சார்பு: நீங்கள் ஒரு குறிப்பிட்ட உருவாக்க முறைமையை (எ.கா., செட்டூல்ஸ், கவிதை, ஃப்லிட்) தேர்வு செய்து எவ்வாறு பயன்படுத்துவது என்பதை அறிய வேண்டும்.
Setup.py மற்றும் Pyproject.toml ஒப்பீடு
setup.py
மற்றும் pyproject.toml
ஆகியவற்றுக்கு இடையேயான முக்கிய வேறுபாடுகளை சுருக்கமாக இங்கே ஒரு அட்டவணை உள்ளது:
வசதி | Setup.py | Pyproject.toml |
---|---|---|
உள்ளமைவு நடை | கட்டாயமானது (பைதான் குறியீடு) | அறிவிப்பு (TOML) |
உருவாக்க முறைமை | உள்ளமைந்தது (செட்டூல்கள்) | வெளிப்படையானது ([build-system] இல் குறிப்பிடப்பட்டுள்ளது) |
பாதுகாப்பு | குறைந்த பாதுகாப்பானதாக இருக்கலாம் (டைனமிக் செயலாக்கம்) | அதிக பாதுகாப்பானது (நிலையான உள்ளமைவு) |
சார்பு மேலாண்மை | அடிப்படை (install_requires ) |
மேம்பட்டது (கவிதை, பிப்பென்வ்வுடன் ஒருங்கிணைப்பு) |
கருவி | பாரம்பரியம் (செட்டூல்கள்) | நவீனமானது (கவிதை, பிப்பென்வ், ஃப்லிட்) |
நெகிழ்வுத்தன்மை | அதிகம் | மிதமானது |
சிக்கலானது | சிக்கலான திட்டங்களுக்கு அதிகமாக இருக்கலாம் | பொதுவாக குறைவாக இருக்கும் |
இடமாற்ற உத்திகள்: Setup.py இலிருந்து Pyproject.toml க்கு
setup.py
இலிருந்து pyproject.toml
க்கு இடம்பெயர்வது கடினமானதாகத் தோன்றலாம், ஆனால் இது நீண்டகால பராமரிப்பு மற்றும் நிலைத்தன்மைக்கான ஒரு மதிப்புமிக்க முதலீடாகும். நீங்கள் பயன்படுத்தக்கூடிய சில உத்திகள் இங்கே:
1. ஒரு சிறிய Pyproject.toml உடன் தொடங்கவும்
உருவாக்க முறைமையை குறிப்பிடும் ஒரு அடிப்படை pyproject.toml
கோப்பை உருவாக்கவும், பின்னர் setup.py
இலிருந்து pyproject.toml
க்கு மெட்டாடேட்டாவை படிப்படியாக மாற்றவும்.
2. Pyproject.toml உடன் செட்டூல்களைப் பயன்படுத்தவும்
உங்கள் உருவாக்க முறைமையாக செட்டூல்களைத் தொடர்ந்து பயன்படுத்துங்கள், ஆனால் pyproject.toml
இல் திட்ட மெட்டாடேட்டாவை வரையறுக்கவும். இது pyproject.toml
இன் நன்மைகளை ஒரு பழக்கமான கருவியைப் பயன்படுத்தும் போது பயன்படுத்த உங்களை அனுமதிக்கிறது.
3. கவிதை போன்ற நவீன கருவிக்கு மாறவும்
கவிதை அல்லது பிப்பென்வ் போன்ற நவீன கருவிக்கு மாறுவதைக் கவனியுங்கள். இந்த கருவிகள் விரிவான சார்பு மேலாண்மை அம்சங்களை வழங்குகின்றன மற்றும் pyproject.toml
உடன் தடையின்றி ஒருங்கிணைக்கப்படுகின்றன.
உதாரணம்: கவிதைக்கு இடம்பெயர்வு
- கவிதையை நிறுவவும்:
pip install poetry
- உங்கள் திட்டத்தில் கவிதையைத் தொடங்கவும்:
poetry init
(இதுpyproject.toml
கோப்பை உருவாக்குவதில் உங்களுக்கு வழிகாட்டும்) - உங்கள் சார்புகளைச் சேர்க்கவும்:
poetry add requests
(அல்லது வேறு ஏதேனும் சார்புகள்) - உங்கள் தொகுப்பை உருவாக்கவும்:
poetry build
4. தானியங்கி இடம்பெயர்வுக்கு கருவிகளைப் பயன்படுத்தவும்
சில கருவிகள் இடம்பெயர்வு செயல்முறையை தானியக்கமாக்க உதவும். உதாரணமாக, உங்கள் setup.py
கோப்பை pyproject.toml
கோப்பாக மாற்ற கருவிகளைப் பயன்படுத்தலாம்.
பைதான் தொகுப்பு நிர்வாகத்திற்கான சிறந்த நடைமுறைகள்
1. ஒரு மெய்நிகர் சூழலைப் பயன்படுத்தவும்
உங்கள் திட்டத்தின் சார்புகளை சிஸ்டம் அளவிலான பைதான் நிறுவலில் இருந்து தனிமைப்படுத்த எப்போதும் ஒரு மெய்நிகர் சூழலைப் பயன்படுத்தவும். இது மோதல்களைத் தடுக்கிறது மற்றும் உங்கள் திட்டத்திற்கு சரியான சார்புகள் இருப்பதை உறுதி செய்கிறது.
venv
ஐப் பயன்படுத்தி உதாரணம்:
conda
ஐப் பயன்படுத்தி உதாரணம்:
2. சார்புகளைத் துல்லியமாக குறிப்பிடவும்
உங்கள் சார்புகளின் இணக்கமான பதிப்புகளைக் குறிப்பிட பதிப்பு கட்டுப்பாடுகளைப் பயன்படுத்தவும். இது பொருந்தாத நூலக புதுப்பிப்புகளால் ஏற்படும் எதிர்பாராத நடத்தைகளைத் தடுக்கிறது. உங்கள் சார்புகளை நிர்வகிக்க pip-tools
போன்ற கருவிகளைப் பயன்படுத்தவும்.
சார்பு விவரக்குறிப்பு உதாரணம்:
``` requests >= 2.20.0, < 3.0.0 ```3. நிலையான உருவாக்க முறைமையைப் பயன்படுத்தவும்
ஒரு உருவாக்க முறைமையைத் (எ.கா., செட்டூல்கள், கவிதை, ஃப்லிட்) தேர்வுசெய்து அதனுடன் ஒட்டிக்கொள்ளவும். இது வெவ்வேறு சூழல்களில் நிலையான கட்டமைப்புகளை உறுதி செய்கிறது மற்றும் தொகுப்பு செயல்முறையை எளிதாக்குகிறது.
4. உங்கள் தொகுப்பை ஆவணப்படுத்தவும்
உங்கள் தொகுப்புக்கு தெளிவான மற்றும் சுருக்கமான ஆவணங்களை எழுதுங்கள். இது உங்கள் தொகுப்பை எவ்வாறு பயன்படுத்துவது என்பதை பயனர்கள் புரிந்து கொள்ள உதவுகிறது மற்றும் மற்றவர்கள் உங்கள் திட்டத்திற்கு பங்களிக்க எளிதாக்குகிறது. உங்கள் குறியீட்டிலிருந்து ஆவணங்களை உருவாக்க Sphinx போன்ற கருவிகளைப் பயன்படுத்தவும்.
5. தொடர்ச்சியான ஒருங்கிணைப்பைப் (CI) பயன்படுத்தவும்
உங்கள் குறியீட்டில் மாற்றங்கள் செய்யப்படும் போதெல்லாம் உங்கள் தொகுப்பை தானாக உருவாக்க, சோதிக்க மற்றும் வரிசைப்படுத்த ஒரு CI அமைப்பை (எ.கா., GitHub Actions, Travis CI, GitLab CI) அமைக்கவும். இது உங்கள் தொகுப்பு எப்போதும் இயங்கும் நிலையில் இருப்பதை உறுதி செய்கிறது.
GitHub Actions உள்ளமைவு உதாரணம்:
```yaml name: பைதான் தொகுப்பு on: push: கிளைகள்: [ முதன்மை ] pull_request: கிளைகள்: [ முதன்மை ] வேலைகள்: உருவாக்கு: runs-on: ubuntu-latest படிகள்: - uses: actions/checkout@v3 - name: பைதான் 3.9 ஐ அமைக்கவும் uses: actions/setup-python@v4 with: python-version: 3.9 - name: சார்புகளை நிறுவவும் run: | python -m pip install --upgrade pip pip install poetry poetry install - name: ஃப்ளேக் 8 உடன் லிண்ட் run: | poetry run flake8 . - name: பைடெஸ்டுடன் சோதிக்கவும் run: | poetry run pytest ```6. உங்கள் தொகுப்பை PyPI இல் வெளியிடவும்
பைதான் தொகுப்பு குறியீட்டுக்கு (PyPI) வெளியிடுவதன் மூலம் உங்கள் தொகுப்பை உலகத்துடன் பகிர்ந்து கொள்ளுங்கள். இது மற்றவர்கள் உங்கள் தொகுப்பை நிறுவவும் பயன்படுத்தவும் எளிதாக்குகிறது.
PyPI இல் வெளியிட படிகள்:
- PyPI மற்றும் TestPyPI இல் ஒரு கணக்கை பதிவு செய்யுங்கள்.
twine
ஐ நிறுவவும்:pip install twine
.- உங்கள் தொகுப்பை உருவாக்கவும்:
poetry build
அல்லதுpython setup.py sdist bdist_wheel
. - TestPyPI க்கு உங்கள் தொகுப்பைப் பதிவேற்றவும்:
twine upload --repository testpypi dist/*
. - PyPI க்கு உங்கள் தொகுப்பைப் பதிவேற்றவும்:
twine upload dist/*
.
உண்மையான உலக எடுத்துக்காட்டுகள்
சில பிரபலமான பைதான் திட்டங்கள் pyproject.toml
ஐ எவ்வாறு பயன்படுத்துகின்றன என்பதைப் பார்ப்போம்:
- கவிதை: அதன் சொந்த தொகுப்பு நிர்வாகத்திற்காக
pyproject.toml
ஐ பயன்படுத்துகிறது. - பிளாக்: சமரசமற்ற குறியீடு வடிவமைப்பாளரும்
pyproject.toml
ஐ பயன்படுத்துகிறார். - FastAPI: பைதான் மூலம் API களை உருவாக்க ஒரு நவீன, வேகமான (உயர் செயல்திறன்), வலை கட்டமைப்பும் அதைப் பயன்படுத்துகிறது.
முடிவுரை
pyproject.toml
பைதான் தொகுப்பு நிர்வாகத்திற்கான நவீன தரநிலையை பிரதிபலிக்கிறது, இது உங்கள் தொகுப்பு மெட்டாடேட்டாவை வரையறுக்கவும் சார்புகளை நிர்வகிக்கவும் ஒரு அறிவிப்பு மற்றும் பாதுகாப்பான வழியை வழங்குகிறது. setup.py
நமக்கு நன்றாகச் செய்திருந்தாலும், நீண்டகால பராமரிப்பு, நிலைத்தன்மை மற்றும் நவீன கருவிகளுடன் ஒருங்கிணைப்பு ஆகியவற்றிற்காக pyproject.toml
க்கு இடம்பெயர்வது ஒரு மதிப்புமிக்க முதலீடாகும். சிறந்த நடைமுறைகளை ஏற்றுக்கொள்வதன் மூலமும் சரியான கருவிகளைப் பயன்படுத்துவதன் மூலமும், உங்கள் பைதான் தொகுப்பு பணிப்பாய்வை நெறிப்படுத்தலாம் மற்றும் உயர்தர, மீண்டும் பயன்படுத்தக்கூடிய தொகுப்புகளை உருவாக்கலாம்.